package org.hdax.dao;

import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface CommonDao<T> {
    /**
     * 查询所有
     */
    List<T> getAll();

    /**
     * 查找单条
     */
    T getById(@Param("id") Integer id);

    /**
     * 分页查询
     */
    List<T> getByPage(@Param("offset") Integer offset, @Param("limit") Integer limit);

    /**
     * 查询总条数
     * @return
     */
    Integer getCount();

    /**
     * 带条件分页查询
     */
    List<T> getByPageAndC(@Param("condition") T condition, @Param("offset") Integer offset, @Param("limit") Integer limit);

    /**
     * 查询总条数
     * @return
     */
    Integer getCountAndC(@Param("condition") T condition);

    /**
     * 新增实体
     */
    void saveEntity(@Param("entity") T entity);

    /**
     * 修改实体
     */
    void updateEntity(@Param("entity") T entity);

    /**
     * 删除实体
     */
    void deleteEntity(@Param("id") Integer id);

    /**
     * 批量删除功能
     */
    void batchDelEntity(List<Integer> ids);
}
